home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 551-575 / disk_570 / gadtoolsbox / source / source.lha / Idcmp.c < prev    next >
C/C++ Source or Header  |  1991-11-04  |  19KB  |  607 lines

  1. /*-- AutoRev header do NOT edit!
  2. *
  3. *   Program         :   Idcmp.c
  4. *   Copyright       :   © Copyright 1991 Jaba Development
  5. *   Author          :   Jan van den Baard
  6. *   Creation Date   :   24-Oct-91
  7. *   Current version :   1.00
  8. *   Translator      :   DICE v2.6
  9. *
  10. *   REVISION HISTORY
  11. *
  12. *   Date          Version         Comment
  13. *   ---------     -------         ------------------------------------------
  14. *   24-Oct-91     1.00            Window IDCMP requester.
  15. *
  16. *-- REV_END --*/
  17.  
  18. #include "GTEd.h"
  19. #include "Protos.h"
  20.  
  21. /*
  22.  * --- External referenced data.
  23.  */
  24. extern ULONG                 Class;
  25. extern UWORD                 Code;
  26. extern struct TextAttr       Topaz80;
  27. extern APTR                  MainVisualInfo;
  28. extern struct Screen        *MainScreen;
  29. extern struct Window        *MainWindow;
  30. extern struct Gadget        *Object;
  31. extern ULONG                 WindowIDCMP;
  32. extern struct ExtGadgetList  Gadgets;
  33. extern BOOL   Saved;
  34.  
  35. #define NUMFLAGS        26
  36.  
  37. #define GD_OK           30
  38. #define GD_CANCEL       31
  39.  
  40. /*
  41.  * --- Module data.
  42.  */
  43. struct Window           *id_Wnd   = NULL;
  44. struct Gadget           *id_GList = NULL;
  45. struct Gadget           *id_Gadgets[ NUMFLAGS ];
  46. BOOL                     id_Bools[ NUMFLAGS ];
  47.  
  48. WORD                     id_Zoom[4];
  49.  
  50. struct TagItem           id_nwTags[] = {
  51.     WA_Left,                0l,
  52.     WA_Top,                 0l,
  53.     WA_Width,               0l,
  54.     WA_Height,              0l,
  55.     WA_IDCMP,               IDCMP_CLOSEWINDOW | BUTTONIDCMP | IDCMP_VANILLAKEY | IDCMP_REFRESHWINDOW,
  56.     WA_Flags,               WFLG_DRAGBAR | WFLG_DEPTHGADGET| WFLG_CLOSEGADGET | WFLG_ACTIVATE | WFLG_RMBTRAP | WFLG_SMART_REFRESH,
  57.     WA_Gadgets,             0l,
  58.     WA_Title,               "Edit Window IDCMP:",
  59.     WA_AutoAdjust,          TRUE,
  60.     WA_Zoom,                (Tag)id_Zoom,
  61.     WA_CustomScreen,        0l,
  62.     TAG_DONE };
  63.  
  64. /*
  65.  * --- Get necessary gadgets IDCMP.
  66.  */
  67. void GetGadgetIDCMP( void )
  68. {
  69.     struct ExtNewGadget *eng;
  70.  
  71.     for ( eng = Gadgets.gl_First; eng->en_Next; eng = eng->en_Next ) {
  72.         switch ( eng->en_Kind ) {
  73.  
  74.             case    BUTTON_KIND:
  75.                 WindowIDCMP |= BUTTONIDCMP;
  76.                 break;
  77.  
  78.             case    CHECKBOX_KIND:
  79.                 WindowIDCMP |= CHECKBOXIDCMP;
  80.                 break;
  81.  
  82.             case    INTEGER_KIND:
  83.                 WindowIDCMP |= INTEGERIDCMP;
  84.                 break;
  85.  
  86.             case    LISTVIEW_KIND:
  87.                 WindowIDCMP |= LISTVIEWIDCMP;
  88.                 break;
  89.  
  90.             case    MX_KIND:
  91.                 WindowIDCMP |= MXIDCMP;
  92.                 break;
  93.  
  94.             case    CYCLE_KIND:
  95.                 WindowIDCMP |= CYCLEIDCMP;
  96.                 break;
  97.  
  98.             case    PALETTE_KIND:
  99.                 WindowIDCMP |= PALETTEIDCMP;
  100.                 break;
  101.  
  102.             case    SCROLLER_KIND:
  103.                 WindowIDCMP |= SCROLLERIDCMP;
  104.                 break;
  105.  
  106.             case    SLIDER_KIND:
  107.                 WindowIDCMP |= SLIDERIDCMP;
  108.                 break;
  109.  
  110.             case    STRING_KIND:
  111.                 WindowIDCMP |= STRINGIDCMP;
  112.                 break;
  113.         }
  114.     }
  115. }
  116.  
  117. /*
  118.  * --- Set all gadgets to IDCMP flags.
  119.  */
  120. void SetIDCMPGadgets( void )
  121. {
  122.     UWORD   i;
  123.  
  124.     for ( i = 0; i < 25; i++ )
  125.         GT_SetGadgetAttrs( id_Gadgets[ i ], id_Wnd, 0l, GTCB_Checked, id_Bools[ i ], TAG_DONE );
  126. }
  127.  
  128. /*
  129.  * --- get user flags
  130.  */
  131. void GetUserIDCMP( void )
  132. {
  133.     UWORD i = 0;
  134.  
  135.     setmem(( char * )&id_Bools[0], NUMFLAGS << 1, 0l );
  136.  
  137.     if (( WindowIDCMP & IDCMP_SIZEVERIFY ) == IDCMP_SIZEVERIFY )
  138.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  139.     if (( WindowIDCMP & IDCMP_NEWSIZE ) == IDCMP_NEWSIZE )
  140.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  141.     if (( WindowIDCMP & IDCMP_REFRESHWINDOW ) == IDCMP_REFRESHWINDOW )
  142.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  143.     if (( WindowIDCMP & IDCMP_MOUSEBUTTONS ) == IDCMP_MOUSEBUTTONS )
  144.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  145.     if (( WindowIDCMP & IDCMP_MOUSEMOVE ) == IDCMP_MOUSEMOVE )
  146.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  147.     if (( WindowIDCMP & IDCMP_GADGETDOWN ) == IDCMP_GADGETDOWN )
  148.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  149.     if (( WindowIDCMP & IDCMP_GADGETUP ) == IDCMP_GADGETUP )
  150.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  151.     if (( WindowIDCMP & IDCMP_REQSET ) == IDCMP_REQSET )
  152.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  153.     if (( WindowIDCMP & IDCMP_REQCLEAR ) == IDCMP_REQCLEAR )
  154.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  155.     if (( WindowIDCMP & IDCMP_REQVERIFY ) == IDCMP_REQVERIFY )
  156.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  157.     if (( WindowIDCMP & IDCMP_MENUPICK ) == IDCMP_MENUPICK )
  158.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  159.     if (( WindowIDCMP & IDCMP_MENUVERIFY ) == IDCMP_MENUVERIFY )
  160.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  161.     if (( WindowIDCMP & IDCMP_CLOSEWINDOW ) == IDCMP_CLOSEWINDOW )
  162.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  163.     if (( WindowIDCMP & IDCMP_RAWKEY ) == IDCMP_RAWKEY )
  164.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  165.     if (( WindowIDCMP & IDCMP_NEWPREFS ) == IDCMP_NEWPREFS )
  166.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  167.     if (( WindowIDCMP & IDCMP_DISKINSERTED ) == IDCMP_DISKINSERTED )
  168.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  169.     if (( WindowIDCMP & IDCMP_DISKREMOVED ) == IDCMP_DISKREMOVED )
  170.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  171.     if (( WindowIDCMP & IDCMP_ACTIVEWINDOW ) == IDCMP_ACTIVEWINDOW )
  172.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  173.     if (( WindowIDCMP & IDCMP_INACTIVEWINDOW ) == IDCMP_INACTIVEWINDOW )
  174.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  175.     if (( WindowIDCMP & IDCMP_DELTAMOVE ) == IDCMP_DELTAMOVE )
  176.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  177.     if (( WindowIDCMP & IDCMP_VANILLAKEY ) == IDCMP_VANILLAKEY )
  178.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  179.     if (( WindowIDCMP & IDCMP_INTUITICKS ) == IDCMP_INTUITICKS )
  180.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  181.     if (( WindowIDCMP & IDCMP_IDCMPUPDATE ) == IDCMP_IDCMPUPDATE )
  182.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  183.     if (( WindowIDCMP & IDCMP_MENUHELP ) == IDCMP_MENUHELP )
  184.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  185.     if (( WindowIDCMP & IDCMP_CHANGEWINDOW ) == IDCMP_CHANGEWINDOW )
  186.         id_Bools[ i++ ] = TRUE; else id_Bools[ i++ ] = FALSE;
  187. }
  188.  
  189. /*
  190.  * --- Set IDCMP flags
  191.  */
  192. void SetIDCMP( void )
  193. {
  194.     UWORD i = 0;
  195.  
  196.     WindowIDCMP = 0l;
  197.  
  198.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_SIZEVERIFY;
  199.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_NEWSIZE;
  200.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_REFRESHWINDOW;
  201.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_MOUSEBUTTONS;
  202.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_MOUSEMOVE;
  203.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_GADGETDOWN;
  204.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_GADGETUP;
  205.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_REQSET;
  206.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_REQCLEAR;
  207.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_REQVERIFY;
  208.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_MENUPICK;
  209.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_MENUVERIFY;
  210.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_CLOSEWINDOW;
  211.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_RAWKEY;
  212.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_NEWPREFS;
  213.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_DISKINSERTED;
  214.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_DISKREMOVED;
  215.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_ACTIVEWINDOW;
  216.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_INACTIVEWINDOW;
  217.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_DELTAMOVE;
  218.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_VANILLAKEY;
  219.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_INTUITICKS;
  220.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_IDCMPUPDATE;
  221.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_MENUHELP;
  222.     if ( id_Bools[ i++ ] ) WindowIDCMP |= IDCMP_CHANGEWINDOW;
  223. }
  224.  
  225. /*
  226.  * --- Display the IDCMP requester.
  227.  */
  228. long EditIDCMP( void )
  229. {
  230.     struct Gadget       *g;
  231.     struct NewGadget     ng;
  232.     BOOL                 running =  TRUE, OK = FALSE;
  233.     WORD                 l, t, w, h, btop, bleft, idc = 0, top = 4;
  234.  
  235.     btop  = MainScreen->WBorTop + MainScreen->RastPort.TxHeight;
  236.     bleft = MainScreen->WBorLeft;
  237.  
  238.     w = bleft + MainScreen->WBorRight  + 300;
  239.     h = btop  + MainScreen->WBorBottom + 168;
  240.     l = (( MainScreen->Width  >> 1 ) - ( w >> 1 ));
  241.     t = (( MainScreen->Height >> 1 ) - ( h >> 1 ));
  242.  
  243.     id_Zoom[0] = 0;
  244.     id_Zoom[1] = btop;
  245.     id_Zoom[2] = 200;
  246.     id_Zoom[3] = btop;
  247.  
  248.     id_nwTags[0].ti_Data = l;
  249.     id_nwTags[1].ti_Data = t;
  250.     id_nwTags[2].ti_Data = w;
  251.     id_nwTags[3].ti_Data = h;
  252.  
  253.     id_nwTags[10].ti_Data = (Tag)MainScreen;
  254.  
  255.     if (( MainScreen->Flags & CUSTOMSCREEN) == CUSTOMSCREEN )
  256.         id_nwTags[10].ti_Tag  = WA_CustomScreen;
  257.     else if (( MainScreen->Flags & PUBLICSCREEN ) == PUBLICSCREEN )
  258.         id_nwTags[10].ti_Tag  = WA_PubScreen;
  259.     else
  260.         id_nwTags[10].ti_Tag  = TAG_DONE;
  261.  
  262.     GetGadgetIDCMP();
  263.     GetUserIDCMP();
  264.  
  265.     if ( g = CreateContext( &id_GList )) {
  266.  
  267.         ng.ng_LeftEdge      =   bleft + 125;
  268.         ng.ng_TopEdge       =   btop + top;
  269.         ng.ng_GadgetText    =   "SIZEVERIFY";
  270.         ng.ng_TextAttr      =   &Topaz80;
  271.         ng.ng_GadgetID      =   idc;
  272.         ng.ng_Flags         =   PLACETEXT_LEFT;
  273.         ng.ng_VisualInfo    =   MainVisualInfo;
  274.  
  275.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  276.  
  277.         id_Gadgets[ idc++ ] = g;
  278.  
  279.         ng.ng_LeftEdge      =   bleft + 267;
  280.         ng.ng_GadgetText    =   "NEWSIZE";
  281.         ng.ng_GadgetID      =   idc;
  282.  
  283.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  284.  
  285.         id_Gadgets[ idc++ ] = g;
  286.  
  287.         top += 11;
  288.  
  289.         ng.ng_LeftEdge      =   bleft + 125;
  290.         ng.ng_TopEdge       =   btop + top;
  291.         ng.ng_GadgetText    =   "REFRESHWINDOW";
  292.         ng.ng_GadgetID      =   idc;
  293.  
  294.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  295.  
  296.         id_Gadgets[ idc++ ] = g;
  297.  
  298.         ng.ng_LeftEdge      =   bleft + 267;
  299.         ng.ng_GadgetText    =   "MOUSEBUTTONS";
  300.         ng.ng_GadgetID      =   idc;
  301.  
  302.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  303.  
  304.         id_Gadgets[ idc++ ] = g;
  305.  
  306.         top += 11;
  307.  
  308.         ng.ng_LeftEdge      =   bleft + 125;
  309.         ng.ng_TopEdge       =   btop + top;
  310.         ng.ng_GadgetText    =   "MOUSEMOVE";
  311.         ng.ng_GadgetID      =   idc;
  312.  
  313.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  314.  
  315.         id_Gadgets[ idc++ ] = g;
  316.  
  317.         ng.ng_LeftEdge      =   bleft + 267;
  318.         ng.ng_GadgetText    =   "GADGETDOWN";
  319.         ng.ng_GadgetID      =   idc;
  320.  
  321.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  322.  
  323.         id_Gadgets[ idc++ ] = g;
  324.  
  325.         top += 11;
  326.  
  327.         ng.ng_LeftEdge      =   bleft + 125;
  328.         ng.ng_TopEdge       =   btop + top;
  329.         ng.ng_GadgetText    =   "GADGETUP";
  330.         ng.ng_GadgetID      =   idc;
  331.  
  332.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  333.  
  334.         id_Gadgets[ idc++ ] = g;
  335.  
  336.         ng.ng_LeftEdge      =   bleft + 267;
  337.         ng.ng_GadgetText    =   "REQSET";
  338.         ng.ng_GadgetID      =   idc;
  339.  
  340.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  341.  
  342.         id_Gadgets[ idc++ ] = g;
  343.  
  344.         top += 11;
  345.  
  346.         ng.ng_LeftEdge      =   bleft + 125;
  347.         ng.ng_TopEdge       =   btop + top;
  348.         ng.ng_GadgetText    =   "REQCLEAR";
  349.         ng.ng_GadgetID      =   idc;
  350.  
  351.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  352.  
  353.         id_Gadgets[ idc++ ] = g;
  354.  
  355.         ng.ng_LeftEdge      =   bleft + 267;
  356.         ng.ng_GadgetText    =   "REQVERIFY";
  357.         ng.ng_GadgetID      =   idc;
  358.  
  359.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  360.  
  361.         id_Gadgets[ idc++ ] = g;
  362.  
  363.         top += 11;
  364.  
  365.         ng.ng_LeftEdge      =   bleft + 125;
  366.         ng.ng_TopEdge       =   btop + top;
  367.         ng.ng_GadgetText    =   "MENUPICK";
  368.         ng.ng_GadgetID      =   idc;
  369.  
  370.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  371.  
  372.         id_Gadgets[ idc++ ] = g;
  373.  
  374.         ng.ng_LeftEdge      =   bleft + 267;
  375.         ng.ng_GadgetText    =   "MENUVERIFY";
  376.         ng.ng_GadgetID      =   idc;
  377.  
  378.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  379.  
  380.         id_Gadgets[ idc++ ] = g;
  381.  
  382.         top += 11;
  383.  
  384.         ng.ng_LeftEdge      =   bleft + 125;
  385.         ng.ng_TopEdge       =   btop + top;
  386.         ng.ng_GadgetText    =   "CLOSEWINDOW";
  387.         ng.ng_GadgetID      =   idc;
  388.  
  389.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  390.  
  391.         id_Gadgets[ idc++ ] = g;
  392.  
  393.         ng.ng_LeftEdge      =   bleft + 267;
  394.         ng.ng_GadgetText    =   "RAWKEY";
  395.         ng.ng_GadgetID      =   idc;
  396.  
  397.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  398.  
  399.         id_Gadgets[ idc++ ] = g;
  400.  
  401.         top += 11;
  402.  
  403.         ng.ng_LeftEdge      =   bleft + 125;
  404.         ng.ng_TopEdge       =   btop + top;
  405.         ng.ng_GadgetText    =   "NEWPREFS";
  406.         ng.ng_GadgetID      =   idc;
  407.  
  408.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  409.  
  410.         id_Gadgets[ idc++ ] = g;
  411.  
  412.         ng.ng_LeftEdge      =   bleft + 267;
  413.         ng.ng_GadgetText    =   "DISKINSERTED";
  414.         ng.ng_GadgetID      =   idc;
  415.  
  416.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  417.  
  418.         id_Gadgets[ idc++ ] = g;
  419.  
  420.         top += 11;
  421.  
  422.         ng.ng_LeftEdge      =   bleft + 125;
  423.         ng.ng_TopEdge       =   btop + top;
  424.         ng.ng_GadgetText    =   "DISKREMOVED";
  425.         ng.ng_GadgetID      =   idc;
  426.  
  427.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  428.  
  429.         id_Gadgets[ idc++ ] = g;
  430.  
  431.         ng.ng_LeftEdge      =   bleft + 267;
  432.         ng.ng_GadgetText    =   "ACTIVEWINDOW";
  433.         ng.ng_GadgetID      =   idc;
  434.  
  435.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  436.  
  437.         id_Gadgets[ idc++ ] = g;
  438.  
  439.         top += 11;
  440.  
  441.         ng.ng_LeftEdge      =   bleft + 125;
  442.         ng.ng_TopEdge       =   btop + top;
  443.         ng.ng_GadgetText    =   "INACTIVEWINDOW";
  444.         ng.ng_GadgetID      =   idc;
  445.  
  446.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  447.  
  448.         id_Gadgets[ idc++ ] = g;
  449.  
  450.         ng.ng_LeftEdge      =   bleft + 267;
  451.         ng.ng_GadgetText    =   "DELTAMOVE";
  452.         ng.ng_GadgetID      =   idc;
  453.  
  454.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  455.  
  456.         id_Gadgets[ idc++ ] = g;
  457.  
  458.         top += 11;
  459.  
  460.         ng.ng_LeftEdge      =   bleft + 125;
  461.         ng.ng_TopEdge       =   btop + top;
  462.         ng.ng_GadgetText    =   "VANILLAKEY";
  463.         ng.ng_GadgetID      =   idc;
  464.  
  465.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  466.  
  467.         id_Gadgets[ idc++ ] = g;
  468.  
  469.         ng.ng_LeftEdge      =   bleft + 267;
  470.         ng.ng_GadgetText    =   "INTUITICKS";
  471.         ng.ng_GadgetID      =   idc;
  472.  
  473.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  474.  
  475.         id_Gadgets[ idc++ ] = g;
  476.  
  477.         top += 11;
  478.  
  479.         ng.ng_LeftEdge      =   bleft + 125;
  480.         ng.ng_TopEdge       =   btop + top;
  481.         ng.ng_GadgetText    =   "IDCMPUPDATE";
  482.         ng.ng_GadgetID      =   idc;
  483.  
  484.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  485.  
  486.         id_Gadgets[ idc++ ] = g;
  487.  
  488.         ng.ng_LeftEdge      =   bleft + 267;
  489.         ng.ng_GadgetText    =   "MENUHELP";
  490.         ng.ng_GadgetID      =   idc;
  491.  
  492.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  493.  
  494.         id_Gadgets[ idc++ ] = g;
  495.  
  496.         top += 11;
  497.  
  498.         ng.ng_LeftEdge      =   bleft + 125;
  499.         ng.ng_TopEdge       =   btop + top;
  500.         ng.ng_GadgetText    =   "CHANGEWINDOW";
  501.         ng.ng_GadgetID      =   idc;
  502.  
  503.         g = CreateGadget( CHECKBOX_KIND, g, &ng, TAG_DONE );
  504.  
  505.         id_Gadgets[ idc++ ] = g;
  506.  
  507.         top += 15;
  508.  
  509.         ng.ng_LeftEdge      =   bleft + 8;
  510.         ng.ng_TopEdge       =   btop + top;
  511.         ng.ng_Width         =   90;
  512.         ng.ng_Height        =   13;
  513.         ng.ng_GadgetText    =   "_OK";
  514.         ng.ng_GadgetID      =   GD_OK;
  515.         ng.ng_Flags         =   PLACETEXT_IN;
  516.  
  517.         g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  518.  
  519.         ng.ng_LeftEdge      =   bleft + 202;
  520.         ng.ng_GadgetText    =   "_CANCEL";
  521.         ng.ng_GadgetID      =   GD_CANCEL;
  522.  
  523.         g = CreateGadget( BUTTON_KIND, g, &ng, GT_Underscore, '_', TAG_DONE );
  524.  
  525.         if ( g ) {
  526.  
  527.             id_nwTags[6].ti_Data = (Tag)id_GList;
  528.  
  529.             if ( id_Wnd = OpenWindowTagList( NULL, id_nwTags )) {
  530.  
  531.                 id_Zoom[0] = l;
  532.                 id_Zoom[1] = t;
  533.                 id_Zoom[2] = w;
  534.                 id_Zoom[3] = h;
  535.  
  536.                 GT_RefreshWindow( id_Wnd, NULL );
  537.  
  538.                 SetIDCMPGadgets();
  539.  
  540.                 do {
  541.                     WaitPort( id_Wnd->UserPort );
  542.  
  543.                     while ( ReadIMsg( id_Wnd )) {
  544.  
  545.                         switch ( Class ) {
  546.  
  547.                             case    IDCMP_REFRESHWINDOW:
  548.                                 GT_BeginRefresh( id_Wnd );
  549.                                 GT_EndRefresh( id_Wnd, TRUE );
  550.                                 break;
  551.  
  552.                             case    IDCMP_CLOSEWINDOW:
  553.                                 running = FALSE;
  554.                                 break;
  555.  
  556.                             case    IDCMP_VANILLAKEY:
  557.                                 switch ( Code ) {
  558.  
  559.                                     case    'o':
  560.                                         goto Ok;
  561.  
  562.                                     case    'c':
  563.                                         goto Cancel;
  564.                                 }
  565.                                 break;
  566.  
  567.                             case    IDCMP_GADGETUP:
  568.                                 if ( Object-> GadgetID < 30 ) {
  569.                                     FlipFlop( 0l, 0l, 0l, &id_Bools[ Object->GadgetID ] );
  570.                                     break;
  571.                                 }
  572.  
  573.                                 switch ( Object->GadgetID ) {
  574.  
  575.                                     case    GD_OK:
  576.                                         Ok:
  577.                                         OK = TRUE;
  578.                                         running = FALSE;
  579.                                         break;
  580.  
  581.                                     case    GD_CANCEL:
  582.                                         Cancel:
  583.                                         running = FALSE;
  584.                                         break;
  585.                                 }
  586.                                 break;
  587.                         }
  588.                     }
  589.                 } while ( running );
  590.             }
  591.         }
  592.     }
  593.  
  594.     if ( OK )  {
  595.         SetIDCMP();
  596.         Saved = FALSE;
  597.     }
  598.  
  599.     if ( id_Wnd )           CloseWindow( id_Wnd );
  600.     if ( id_GList )         FreeGadgets( id_GList );
  601.  
  602.     id_Wnd   = 0l;
  603.     id_GList = 0l;
  604.  
  605.     ClearMsgPort( MainWindow->UserPort );
  606. }
  607.